#include "ManejadorArchivos.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

/* ******************************************************************
 *                        PRUEBAS UNITARIAS							*
 * *****************************************************************/
 
void print_test(char* name, bool result) {
    printf("%s: %s\n", name, result? "OK" : "ERROR");
}

/* Prueba que las primitivas del vector funcionen correctamente. */
void prueba_ManejadorArchivos() {
    
	char* nombre = malloc (12*sizeof(char));
	strcpy (nombre, "Archivo.txt");
	char* nombreSinExt = "Archivo";
	char* aux;
	char PrimeraLinea[] = "Hola como esta?";
	char SegundaLinea[] = "todo bien, y vos?";
	char TerceraLinea[] = "ak andamos programando.";
   
	ManejadorArchivos_t*  archivo=ManejadorArchivos_crear(nombre);
	print_test("Pruebo que el nombre del archivo es con el que se creo Archivo.txt ",strcmp( ManejadorArchivos_nombreDelArchivo(archivo),nombre)==0);
	print_test("Pruebo que el nombre del archivo sin extensión es con el que se creo Archivo ",strcmp( ManejadorArchivos_nombreDelArchivoSinExt(archivo),nombreSinExt)==0);
  
	aux = ManejadorArchivos_leer(archivo);
	print_test("Pruebo que al leer es igual a la PrimeraLinea del Archivo.txt ",strcmp( aux ,PrimeraLinea)==0);
	free(aux);
	print_test("Pruebo que el manejadorArchivos No Termino De Leer ",!ManejadorArchivos_terminoDeLeer(archivo));
	aux = ManejadorArchivos_leer(archivo);
	print_test("Pruebo que al leer es igual a la SegundaLinea del Archivo.txt ",strcmp( aux ,SegundaLinea)==0);
	free(aux);
	
	aux = ManejadorArchivos_leer(archivo);
	print_test("Pruebo que al leer es igual a la TerceraLinea del Archivo.txt ",strcmp( aux ,TerceraLinea)==0);
	free(aux);
    
    aux = ManejadorArchivos_leer(archivo);
    free(aux);
	aux = ManejadorArchivos_leer(archivo);
	free(aux);
	print_test("Pruebo que el manejadorArchivos Termino De Leer ",ManejadorArchivos_terminoDeLeer(archivo));
	
	
	ManejadorArchivos_destruir(archivo);

}


/* ******************************************************************
 *                        PROGRAMA PRINCIPAL
 * *****************************************************************/

/* Programa principal. */
int main(void) {

	printf ("\nCOMIENZO DE PRUEBAS MANEJADOR ARCHIVOS.\n\n");
	
    prueba_ManejadorArchivos();
    
	printf ("\nFIN DE PRUEBAS MANEJADOR ARCHIVOS.\n\n");
	
    return 0;
}




